//最简单的事件总线  观察者模式
//事件总线必须有一个对象存储订阅的事件和对象名称（这个可以是数组，一个事件对应多个执行函数）
let eventEmitter=(function(){
  let observerList={};  // 存储订阅的事件和对象
  function on(eventName,observer){  
    if(eventName in observerList){
      observerList[eventName].push(observer)
    }else{
      observerList[eventName]=[observer]
    }
  }

   function off(eventName,observer){
    if(eventName in observerList){
      var index=observerList[eventName].indexOf(observer.name)
      console.log(observerList)
      if(index>-1){
        observerList[eventName].splice(index,1)
      }
    }else{
      throw Error('没有订阅过该事件')
    }
   }
    function trriger(eventName,eventData){
      if(eventName in observerList){
        observerList[eventName].forEach((o) => {
          o(eventData)
        })
      }
    }
    return {
      on,
      off,
      trriger
    }
})()

a=function(e){
  console.log("触发事件a：" + e)
}
b=function(c){
  console.log('触发事件b：'+c)
}
eventEmitter.on("事件1",a)
eventEmitter.on("事件1",b)
// eventEmitter.off("事件1", a)
eventEmitter.trriger("事件1", "事件1的数据")